/********************************************************************
	file name:	hy_json_config.h
	created:	2012/03/26 20:21
	author:		supercaco@sina.com
	purpose:	
*********************************************************************/
#ifndef	_HY_JSON_CONFIG_H_
#define _HY_JSON_CONFIG_H_

#include "hy_json_reader.h"

class hy_json_config 
{
	typedef std::map<std::string,hy_basic_config*>	config_t;
public:
	hy_json_config(){}
	virtual ~hy_json_config(){}

	//*************************************************************************
	// Method:    hy_json_config::init
	// Returns:   hy_err_t
	// Qualifier:
	//*************************************************************************
	virtual hy_err_t init()
	{
		return hy_right;
	}

	//*************************************************************************
	// Method:    hy_json_config::unit
	// Returns:   hy_err_t
	// Qualifier:
	//*************************************************************************
	hy_err_t unit()
	{
		clear();
		return hy_right;
	}

	//*************************************************************************
	// Method:    hy_json_config::get_config
	// Returns:   hy_basic_config*
	// Parameter: std::string & name
	// Qualifier:
	//*************************************************************************
	hy_basic_config* get_config(std::string& name)
	{
		return _configs[name];
	}

protected:

	//*************************************************************************
	// Method:    hy_json_config::clear
	// Returns:   void
	// Qualifier:
	//*************************************************************************
	void clear()
	{
		for (config_t::iterator itor = _configs.begin();
			itor != _configs.end();
			++itor)
		{
			if (itor->second != NULL)
			{
				delete itor->second;
			}
		}
		_configs.clear();
	}

protected:
	config_t		_configs;
	hy_json_reader	_reader;
};

#endif //_HY_JSON_CONFIG_H_
